コンピューター思考 2019 4 29
もうすぐ元号が「平成」から「令和」に変わるので、
「コンピューターシステムは、大丈夫なのか」という話が出ています。
(平成は31年までであり、「平成32年」は存在しない)
今のコンピューターシステムは、
いや、プログラミングは、西暦を使っているので、
大きな問題は起こらないと思います。
ただし、この機会に、
コンピューター思考を身につけるには、
ちょうどよい機会なので、プログラミングについて書きましょう。
コンピューターにとっては、
31年4月29日というデータが入ってきても、
それが「平成31年」なのか「昭和31年」なのか区別できません。
(人間だったら、常識で区別するか、文脈や話の前後関係で判断するでしょう)
そこで、年号を区別する記号をつける必要があります。
明治は「1」、大正は「2」、昭和は「3」は、平成は「4」となります。
つまり、平成31年4月29日は、コンピューターでは「4310429」となります。
これで、コンピューターは、「31年」とは、「昭和31年」ではなく、
「平成31年」のことだと理解します。
しかしながら、コンピューターの入力作業は、
人間がすることなので、必ず「入力ミス」が発生すると、
プログラマーは、プログラミングの際に想定する必要があります。
たとえば、「平成32年」と入力してしまう場合があるでしょう。
本来は「5020429」と入力すべきところを「4320429」と入力してしまった。
相手が人間ならば笑い話で済みますが、
コンピューターだったら、どうなるか。
プログラマーは、このような誤ったデータがコンピューター内部に入らないように、
データチェック・プログラムを作ります。
つまり、最初の1桁が「4」だったら、
元号は「31以下」になっているか、
もし「32以上」だったらエラー表示をする必要があります。
あるいは、「5320429」というデータが入ってきたら、
コンピューターでは、令和32年4月29日と認識してしまいます。
これを見て、多くの人は、
「さすがに、そういう入力ミスはないだろう」と思うでしょうが、
プログラミングにおいては、あらゆる場合を想定する必要があります。
こういうところが、サイバー攻撃の入り口になるからです。
多くの人は、サイバー攻撃というと、
複雑で高度なウイルス・プログラムを連想するでしょうが、
要はコンピューターの動きを一時的に止めれば目的は達成されますので、
弱い部分を狙うことになります。
たとえば、泥棒が空き巣に入る時には、
どこから侵入しやすいかを考えます。
さすがに玄関は厳重になっているので、
家の周りを一回りして、弱い部分を探すのです。
サイバー攻撃の場合も、正面から侵入すると、
激しい反撃を受けますので、裏口を探すわけです。
「元号」という制度は、日本特有の制度なので、
そこが狙い目となってしまうかもしれませんが、
最近のプログラミングは、元号を使わず、
西暦を使っていますので、
そういう問題は起こらないと思いますが、
古いシステムでは懸念があります。
もうひとつの懸念は、日本政府の上層部には、
コンピューターに詳しい人がいないということです。
ここが「新たな狙い目」になるかもしれません。
最近のニュースでは、IT担当大臣が年配の方だったので、
「パソコンを使ったことがない」というニュースがありました。
(今は、パソコンを使える人に交代したそうです)
後世の歴史家は、こう書くでしょう。
「第二次世界大戦までは、戦車や戦艦が使われた。
しかし、第三次世界大戦は、コンピューター同士の戦いだった」